#define _CRT_SECURE_NO_WARNINGS 1

#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>

using namespace std;

//const int N = 15;
//int n;
//int sta[15];
//
//void dfs(int i)
//{
//    if (i == n)
//    {
//        for (int j = 0; j < n; j++)
//        {
//            if (sta[j] == 1)
//            {
//                printf("%d ", j + 1);
//            }
//        }
//        puts("");
//        return;
//    }
//    sta[i] = 1;
//    dfs(i + 1);
//
//    sta[i] = 2;
//    dfs(i + 1);
//}

int main()
{
    scanf("%d", &n);
    dfs(0);

    return 0;
}


const int N = 10;
int n, count;
int sta[N];
bool used[N];

void dfs(int i)
{
    if (i > n)
    {
        for (int j = 1; j <= n; j++) printf("%d ", sta[j]);
        puts("");
        return;
    }

    for (int j = 1; j <= n; j++)
    {
        if (!used[j])
        {
            sta[i] = j;
            used[j] = true;
            dfs(i + 1);

            used[j] = false;
        }
    }
}

int main()
{
    scanf("%d", &n);
    dfs(1);
    return 0;
}